/**
 * projectName: Junit5Demo0410
 * fileName: Junit5Demo_1_1_Assert.java
 * packageName: com.junit5.xunit.junit.demo
 * date: 2021-04-10 上午10:28
 */
package xunit.junit.demo;

import com.sun.org.glassfish.gmbal.Description;
import org.junit.jupiter.api.DisplayName;
import util.Calculator;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertEquals;

/**
 * @version: V1.0
 * @author: kuohai
 * @className: Junit5Demo_1_1_Assert
 * @packageName: com.junit5.xunit.junit.demo
 * @description: 断言示例
 * @data: 2021-04-10 上午10:28
 **/
@DisplayName("基础断言测试Case")
@Description("硬编码方式写TestCase，断言也不够高效")
public class Junit5Demo_1_1_Assert {
    @Test
    @DisplayName("加法测试")
    @Description("第二个断言故意写错，导致整个Case失败不会继续执行该Case中的后续代码")
    public void addTest() throws InterruptedException {
        int result = Calculator.add(4, 2);
        System.out.println("加法计算结果： " + result);
        assertEquals(6, result);

        int result01 = Calculator.add(1, -1);
        System.out.println("加法计算结果： " + result01);
        assertEquals(1, result01);

        int result02 = Calculator.add(0, 2);
        System.out.println("加法计算结果： " + result02);
        assertEquals(1, result02);

    }

    @Test
    @DisplayName("减法测试")
    @Description("陈亮晶追加，减法测试，硬编码方式")
    void subtractTest() throws InterruptedException {
        int result1 = Calculator.subtract(10, 2);
        System.out.println("减法计算结果1：" + result1);
        assertEquals(8, result1);

        int result2 = Calculator.subtract(100, 20);
        System.out.println("减法计算结果1：" + result2);
        assertEquals(80, result2);

        /**
         * 次数断言故意写错预期结果，断言会失败，整个Case的运行结果都为失败
         * 这种断言一旦失败，该Case后面的代码都不会执行，整体效率会变低
         * 查看下一个Clas AssertAll，使用"软断言"的方式
         */
        int result3 = Calculator.subtract(999, 89);
        System.out.println("减法计算结果1：" + result3);
//        assertEquals(910, result3);
        assertEquals(900, result3);
    }
}